A storage system is a computer that provides storage service relating to the organization of information on writable persistent storage devices, such as memories, tapes or disks. The storage system is commonly deployed within a storage area network (SAN) or a network attached storage (NAS) environment. When used within a NAS environment, the storage system may be embodied as a file server including an operating system that implements a file system to logically organize the information as a hierarchical structure of data containers, such as files on, e.g., the disks. Each “on-disk” file may be implemented as a set of data structures, e.g., disk blocks, configured to store information, is such as the actual data (i.e., file data) for the file.
The file server, or filer, may be further configured to operate according to a client/server model of information delivery to thereby allow many client systems (clients) to access shared resources, such as files, stored on the filer. Sharing of files is a hallmark of a NAS system, which is enabled because of its semantic level of access to files and file systems. Storage of information on a NAS system is typically deployed over a computer network comprising a geographically distributed collection of interconnected communication links, such as Ethernet, that allow clients to remotely access the information (files) on the filer. The clients typically communicate with the filer by exchanging discrete frames or packets of data according to pre-defined protocols, such as the Transmission Control Protocol/Internet Protocol (TCP/IP).
In the client/server model, the client may comprise an application executing on a computer that “connects” to the filer over a computer network, such as a point-to-point link, shared local area network, wide area network or virtual private network implemented over a public network, such as the Internet. NAS systems generally utilize file-based access protocols; therefore, each client may request the services of the filer by issuing file system protocol messages (in the form of packets) to the file system over the network identifying one or more files to be accessed without regard to specific locations, e.g., blocks, in which the data are stored on disk. By supporting a plurality of file system protocols, such as the conventional Common Internet File System (CIFS) and the Network File System (NFS) protocols, the utility of the filer may be enhanced for networking clients.
A SAN is a high-speed network that enables establishment of direct connections between a storage system and its storage devices. The SAN may thus be viewed as an extension to a storage bus and, as such, an operating system of the storage system enables access to stored data using block-based access protocols over the “extended bus”. In this context, the extended bus is typically embodied as Fibre Channel (FC) or Ethernet media adapted to operate with block access protocols, such as Small Computer Systems Interface (SCSI) protocol encapsulation over FC (e.g., FCP) or TCP (iSCSI).
A SAN arrangement or deployment allows decoupling of storage from the storage system, such as an application server, and some level of information storage sharing at the storage system level. There are, however, environments wherein a SAN is dedicated to a single storage system. In some SAN deployments, the information is organized in the form of databases, while in others a file-based organization is employed. Where the information is organized as files, the client requesting the information maintains file mappings and manages file semantics, while its requests (and storage system responses) address the information in terms of block addressing on disk using, e.g., a logical unit number (lun).
A network environment may be provided wherein information (data) is stored in secure storage served by one or more storage systems coupled to one or more security appliances. Each security appliance is configured to transform unencrypted data (cleartext) generated by clients into encrypted data (ciphertext) destined for secure storage or “cryptainers” on the storage system. As such, the security appliance generally functions as a “store and forward” device that cryptographically processes, e.g., encrypts/decrypts, data contained in packets that normally flow directly between a client and a cryptainer on the storage system. As used herein, a cryptainer is a piece of storage on a storage device, such as a disk, in which the encrypted data is stored. In the context of a SAN environment, a cryptainer can be, e.g., a disk, a region on the disk or several regions on one or more disks that, in the context of a SAN protocol, is accessible as a lun. In the context of a NAS environment, the cryptainer may be a collection of files on one or more disks. Specifically, in the context of the CIFS protocol, the cryptainer may be a share, while in the context of the NFS protocol, the cryptainer may be a mount point. In a tape environment, the cryptainer may be a tape containing a plurality of tape blocks.
Each cryptainer is associated with its own encryption key, e.g., a cryptainer key, which is used by the security appliance to encrypt and decrypt the data stored on the cryptainer. An encryption key is a code or number which, when taken together with an encryption algorithm, defines a unique transformation used to encrypt or decrypt data. Data remains encrypted while stored in a cryptainer until requested by an authorized client. At that time, the security appliance retrieves the encrypted data from the cryptainer, decrypts it and forwards the unencrypted data to the client.
Typically, a network adapter of the security appliance receives the packets from the computer network and loads the data contained therein into a system memory coupled to a system bus of the appliance. The adapter may be configured to support random access (as opposed to stream-oriented) data transfers over the system bus which, in the context used herein, denotes that there is no guarantee of ordering of data transferred between the adapter and memory. For example, if the address range of the data packets received at the adapter extends from address zero to address 8 k bytes (8 kB), there are no guarantees that the data contained in the packets are loaded into system memory starting at address zero and proceeding contiguously to address 8 kB.
As a result, the security appliance must typically (i) wait for the entire data transfer to complete from the adapter into system memory (to ensure proper ordering of the data) prior to allowing an encryption unit of the appliance to perform cryptographic operations on the data (i.e., the “store”) and then (ii) wait for those operations to complete before transferring the operation results over the network (i.e., the “forward”). The need to wait for completion of the entire data transfer before cryptographic operations can be performed introduces latency into the network environment which, in turn, results in an adverse impact on the data access performance of the storage system. That is, the faster the data is processed at the security appliance, the less impact such processing will have on data access performance.
Accordingly, it is desirable to provide an improved security appliance that reduces the latency introduced into a network environment as a result of the transfer of data and the cryptographic processing of that data within the appliance.